內部系統最常遇到的需求,就是使用者需要管理資料,以下分享這樣的管理行為如何操作,通常是在表格上的對應資料上放上按鈕來操作
修改時需要預帶資料,新增跟修改的元件會做成共用的,避免有欄位調整的時候改A忘B,會藉由參數來確認是不是編輯模式
通常有以下三種型式
彈窗
// employee.html
<!-- 編輯彈窗 -->
<app-detail-modal [isVisible]="isModalVisible" [employee]="selectedEmployee" [isEdit]="isEditMode"
(closeModal)="handleCloseModal()">
</app-detail-modal>
// employee.ts
// 操作處理
onEdit(employee: Employee): void {
this.isEditMode = true;
this.selectedEmployee = employee;
this.isModalVisible = true;
}
// detail.modal.ts
ngOnChanges(changes: SimpleChanges): void {
// 監聽員工資料變化,用於編輯模式
if (this.employee && this.isEdit) {
console.log('編輯員工:', this.employee);
this.patchFormValue();
}
}
patchFormValue(){
this.validateForm.patchValue(this.employee);
}
跳轉新頁面
// 編輯
onEdit(employee: Employee): void {
this.routes.navigate(['/employee/edit', employee.id]);
}
// 新增
onCreate(employee: Employee): void {
this.routes.navigate(['/employee/create']);
}
不同區塊:他需要看到原始資料,或是你覺得他需要
同區塊
另外凡是新增、修改、刪除,有跟實際資料作互動的動作,都需要做頁面刷新的動作,雖然規格書可能不會明確說明這樣的行為,但是使用者通常預設他做完之後要看到差異,不然他不會知道自己有沒有做成功。
同時最好加入Loading管理使用者操作,避免他重複操作同一個按鈕,如何加入Loading會在你前面篇幅已經提到,可以一併使用。
流程是:點擊確認 → 送API → loading → 成功訊息→ 按下成功訊息的確定後 → 列表刷新